package com.system.cacheClient.config;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

/**
 * 缓存客户端配置属性类
 */
@Data
@Component
@ConfigurationProperties(prefix = "cache.client")
public class CacheClientProperties {
    
    /**
     * 是否开启本地缓存，默认开启
     */
    private boolean localCache = true;
    
    /**
     * 本地缓存最大大小，默认1000
     */
    private int localCacheMaxSize = 1000;
    
    /**
     * 本地缓存过期时间（分钟），默认10分钟
     */
    private int localCacheExpireAfterWrite = 10;
    
    /**
     * 失效模式，默认为主动失效
     * 1: 主动失效 - 客户端和服务端都直接删除缓存
     * 2: 被动失效 - 将缓存过期时间设置为0
     */
    private int invalidationMode = 1;
    
    /**
     * 热点数据同步配置
     */
    private HotDataSync hotDataSync = new HotDataSync();
    
    /**
     * 热点数据同步配置内部类
     */
    @Data
    public static class HotDataSync {
        /**
         * 是否启用热点数据同步，默认不启用
         */
        private boolean enabled = false;
        
        /**
         * 同步周期（分钟），默认5分钟
         */
        private int interval = 5;
        
        /**
         * 每次同步的最大热点数据数量，默认100
         */
        private int maxHotKeys = 100;
    }
}